#ifndef __T3SRAPP_H__
#define __T3SRAPP_H__
#include <SDL.h>
#include <mesh.h>
#include <texture.h>
#include <window_manager.h>
#include <framebuffer.h>
#include <game_timer.h>
#include <input_manager.h>
#include <scene_manager.h>
#include <renderer.h>
#include <scene.h>
#include <vec4.h>

class T3SRApp {
public:
    static const int WindowWidth = 800;
    static const int WindowHeight = 720;
    T3SRApp(const T3SRApp&) = delete;
    T3SRApp& operator = (const T3SRApp&) = delete;

    T3SRApp(int, char**);
    void Run();
    ~T3SRApp();
private:
    std::filesystem::path parseCmdLine(int, char**);
private:
    WindowManager mWindowManager;
    InputManager mInputManager;
    Framebuffer mFrameBuffer;
    SceneManager mSceneManager;
    MicroTimer mTimer;
};

#endif